/////////////////////////////// 
// Analizador sintáctico 
/////////////////////////////// 

header {
	package practicaspl.p3;
}

class Anasintnuevo extends Parser; 

options {
	importVocab = Analex;
	k = 5;
}

{

private boolean error = false;
public boolean DetectaError() {
	return error;
}

}

	entrada : (asignacionfor | asignacionwhile | asignacion | asignacionset)* EOF {error = true;};	
	asignacion : IDENT OPERADOR tipo SEPARADOR;
	asignacionset : SET DOLAR IDENT OPERADOR tipo SEPARADOR (IF PARENTESISA DOLAR IDENT PARENTESISC LLAVEA asignacion LLAVEC)? ;
	tipo : BOOLEANO|NUMERO|RUTA|CADENA;
	
	entrada2 : (asignacion2 | asignacionset2)* EOF {error = true;};
	asignacion2 : IDENT OPERADOR tipo;
	asignacionset2 : SET DOLAR IDENT OPERADOR tipo (IF PARENTESISA DOLAR IDENT PARENTESISC LLAVEA asignacion2 LLAVEC)? ;
		
	asignacionfor : FOR PARENTESISA (operacion | operacion SEPARADOR)+ PARENTESISC LLAVEA asignacion LLAVEC;
	asignacionwhile : WHILE PARENTESISA (operacion | operacion SEPARADOR)+ PARENTESISC LLAVEA asignacion LLAVEC;
	operacion : IDENT (MAS | MENOS | COMPARADOR | OPERADOR) (tipo | PARENTESISA operacion PARENTESISC); 
	
	